package cn.com.controller.operationController;


import cn.com.Enum.UserAuth;
import cn.com.annotation.Auth;
import cn.com.constant.Code;
import cn.com.db.model.Embryo;
import cn.com.db.model.StoreEmbryo;
import cn.com.db.service.EmbryoService;
import cn.com.db.service.StoreEmbryoService;
import cn.com.util.DataResult;
import cn.com.util.JsonUtil;
import cn.com.util.TimeUtil;
import cn.com.util.UidUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;

@Auth(UserAuth.SELLER)
@RestController
@RequestMapping("/operation/embryo")
public class EmbryoOperationController {

    @Autowired
    EmbryoService embryoService;
    @Autowired
    StoreEmbryoService storeEmbryoService;

    @RequestMapping(value = "/{storeId}",method = RequestMethod.GET)
    public String getEmbryo(@PathVariable("storeId")String storeId){
        DataResult dataResult=new DataResult();
        dataResult.setData(storeEmbryoService.getStoreEmbryo(storeId));
        dataResult.setTotal(storeEmbryoService.countStoreEmbryo(storeId));
        dataResult.setCode(Code.SUCCESS);
        dataResult.setMessage("返回成功");
        return JsonUtil.toJsonString(dataResult);
    }

    @RequestMapping(value = "/onEmbryo",method = RequestMethod.POST)
    public String onEmbryo(@RequestParam("storeId") String storeId,
                         @RequestParam("embryoId")String embryoId,
                         @RequestParam("price")BigDecimal price){
        DataResult dataResult=new DataResult();
        if (!embryoService.isExist(embryoId)){
            dataResult.setCode(Code.NOT_FOUND);
            dataResult.setMessage("蛋糕胚不存在");
            return JsonUtil.toJsonString(dataResult);
        }
        StoreEmbryo storeEmbryo=storeEmbryoService.getStoreEmbryoOfStore(storeId,embryoId);
        Embryo embryo=embryoService.getEmbryoById(embryoId);
        if (storeEmbryo==null){
            storeEmbryo=new StoreEmbryo();
            storeEmbryo.setId(UidUtil.createUUID());
            storeEmbryo.setEmbryo(embryo);
            storeEmbryo.setStore(storeId);
            storeEmbryo.setDel(false);
            storeEmbryo.setPrice(price);
            storeEmbryo.setCreated_at(TimeUtil.getNowTimestamp());
            storeEmbryo.setUpdated_at(TimeUtil.getNowTimestamp());
            storeEmbryoService.onEmbryo(storeEmbryo);
            dataResult.setData(storeEmbryoService.getStoreEmbryoById(storeEmbryo.getId()));
        }else if (storeEmbryo.getDel()){
            storeEmbryo.setDel(false);
            storeEmbryo.setPrice(price);
            storeEmbryoService.updateEmbryo(storeEmbryo);
            dataResult.setData(storeEmbryoService.getStoreEmbryoById(storeEmbryo.getId()));
        }else {
            dataResult.setCode(Code.SERVER_ERROR);
            dataResult.setMessage("店铺已上架该蛋糕胚");
            return JsonUtil.toJsonString(dataResult);
        }
        dataResult.setCode(Code.SUCCESS);
        dataResult.setMessage("操作成功");
        return JsonUtil.toJsonString(dataResult);
    }


    @RequestMapping(value = "/offEmbryo",method = RequestMethod.POST)
    public String offEmbryo(@RequestParam("id") String storeEmbryoId){
        DataResult dataResult=new DataResult();
        if (!storeEmbryoService.isExist(storeEmbryoId)){
            dataResult.setCode(Code.SERVER_ERROR);
            dataResult.setMessage("蛋糕胚不存在,或商店已下架该蛋糕胚");
            return JsonUtil.toJsonString(dataResult);
        }
        StoreEmbryo storeEmbryo= storeEmbryoService.getStoreEmbryoById(storeEmbryoId);
        storeEmbryo.setDel(true);
        storeEmbryoService.updateEmbryo(storeEmbryo);
        dataResult.setData(storeEmbryo);
        dataResult.setCode(Code.SUCCESS);
        dataResult.setMessage("操作成功");
        return JsonUtil.toJsonString(dataResult);
    }

    @RequestMapping(value = "/update",method = RequestMethod.POST)
    public String updateEmbryo(@RequestParam("id") String storeEmbryoId,
                          @RequestParam("price")BigDecimal price){
        DataResult dataResult=new DataResult();
        if (!storeEmbryoService.isAlive(storeEmbryoId)){
            dataResult.setCode(Code.SERVER_ERROR);
            dataResult.setMessage("蛋糕胚不存在,或商店已下架该蛋糕胚");
            return JsonUtil.toJsonString(dataResult);
        }
        StoreEmbryo storeEmbryo= storeEmbryoService.getStoreEmbryoById(storeEmbryoId);
        storeEmbryo.setPrice(price);
        storeEmbryoService.updateEmbryo(storeEmbryo);
        dataResult.setData(storeEmbryo);
        dataResult.setCode(Code.SUCCESS);
        dataResult.setMessage("修改成功");
        return JsonUtil.toJsonString(dataResult);
    }

}
